package com.lingdong.onlinejudge.service;

import com.lingdong.onlinejudge.model.dto.submit.SubmitDto;
import com.lingdong.onlinejudge.model.dto.submit.SubmitQueryDto;
import com.lingdong.onlinejudge.model.dto.submit.SubmitUpdateExpDto;
import com.lingdong.onlinejudge.model.entity.Submit;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @author lzw
 * @description 针对表【submit】的数据库操作Service
 * @createDate 2024-02-12 20:50:50
 */
public interface SubmitService extends IService<Submit> {

    /**
     * 提交代码
     *
     * @param submitDto 提交的代码
     * @param token     用户token
     * @return 是否成功
     */
    boolean submit(SubmitDto submitDto, String token);


    /**
     * 根据比赛id 获取 当前登录角色所有的提交
     *
     * @param matchId 比赛id
     * @param token 用户token
     * @return 提交列表
     */
    List<Submit> queryAllSubmit(long matchId,String token);


    /**
     * 根据提交id 添加分值
     * @param updateDto id 分值
     * @return 是否成功
     *
     */

    boolean updateSubmitExp( SubmitUpdateExpDto updateDto);

    /**
     * 根据比赛id 结算分值(按照人来分组)
     * @param matchId 比赛id
     */

    boolean updateAllUserExpToSign(long matchId);

    /**
     * 查找试题提交记录
     * @param queryDto 比赛id 用户id 试题id
     */
    Submit selectOneSubmit(SubmitQueryDto queryDto);


    /**
     * 根据试题id,比赛id 查找提交列表
     * @param topicId 试题id
     * @param matchId 比赛id
     * @return 提交列表
     */
    List<Submit> getSubmitList(Long topicId,Long matchId);
}
